package com.itlong.cloud.operate.service;

import com.itlong.cloud.POJO.DTO.operate.OperateAppFunctionGetPageDTO;
import com.itlong.cloud.POJO.PO.AppFunctionInfoPO;
import com.itlong.cloud.POJO.VO.app.AppFunctionInfoVO;
import com.itlong.cloud.utils.page.Page;

import java.util.List;

/**
 * <desc>
 *      运营-app功能管理业务处理接口
 * </desc>
 *
 * @createDate
 */
public interface IOperateAppFunctionInfoService {
    /**
     * <desc>
     *      保存功能
     * </desc>
     *
     * @param appFunctionInfoPO 功能实体
     * @return sql执行行数
     * @author Jiaqi.X
     * @createDate 2017/09/30
     */
    Integer save(AppFunctionInfoPO appFunctionInfoPO) throws Exception;
    /**
     * <desc>
     *      更新功能
     * </desc>
     *
     * @param appFunctionInfoPO 功能实体
     * @return sql执行行数
     * @author Jiaqi.X
     * @createDate 2017/09/30
     */
    Integer update(AppFunctionInfoPO appFunctionInfoPO) throws Exception;
    /**
     * <desc>
     *      通过id获取功能
     * </desc>
     *
     * @param appFunctionInfoPO 功能实体
     * @return 资源实体
     * @author Jiaqi.X
     * @createDate 2017/09/30
     */
    AppFunctionInfoPO getOne(AppFunctionInfoPO appFunctionInfoPO);
    /**
     * <desc>
     *      获取所有功能
     * </desc>
     *
     * @return 资源实体集合
     * @author Jiaqi.X
     * @createDate 2017/09/30
     */
    List<AppFunctionInfoPO> getList();

    /**
     * <desc>
     *      获取分页数据
     * </desc>
     *
     * @param pageDTO 查询参数DTO
     * @return page模型
     * @author Jiaqi.X
     * @createDate 2017/09/30
     */
    Page<AppFunctionInfoPO> getPage(OperateAppFunctionGetPageDTO pageDTO) throws Exception;

    /**
     * <desc>
     *      删除功能
     * </desc>
     *
     * @param appFunctionIds 功能id数组
     * @return sql执行行数
     * @author Jiaqi.X
     * @createDate 2017/09/21
     */
    Integer delete(String appFunctionIds);

    /**
     * <desc>
     *      根据parent获取下级资源
     * </desc>
     *
     * @param appFunctionId 功能id
     * @return 子级结果集
     * @author Jiaqi.X
     * @createDate 2017/09/30
     */
    List<AppFunctionInfoVO> getChilds(String appFunctionId);

    /**
     * <desc>
     *      获取套餐分配菜单所有节点
     * </desc>
     *
     * @param   appPackageId 套餐id
     * @return
     * @author Jiaqi.X
     * @createDate 2017/09/26
     */
    public List<AppFunctionInfoVO> getAllotFunction(String appPackageId);

    /**
     * <desc>
     *      获取当前节点的父级节点以及同级别所有父级节点
     * </desc>
     *
     * @param appFunctionId 功能id
     * @return
     * @author Jiaqi.X
     * @createDate 2017/09/30
     */
    public List<AppFunctionInfoPO> getParentLevelFunctions(String appFunctionId);

    /**
     * <desc>
     *      获取APP配置信息 供APP使用
     * </desc>
     *
     * @param projectId 项目id
     * @return
     * @author Jiaqi.X
     * @createDate 2017/11/02
     */
    List<AppFunctionInfoPO> getAppConfig(String projectId);

    /**
     * <desc>
     *      云半径多场景项目上线后处理旧数据
     * </desc>
     *
     * @param
     * @return
     * @Author Zhu.yj
     * @createDate  2021/5/12
     */
    Integer handlerOldPackage();
}
